#include <iostream>
#include <cstdlib>
#include <cstring>
#include <errno.h>
#include <signal.h>
#include <sys/types.h>

#include <unistd.h>

using namespace std;
int cnt = 0;

void handler(int signo)
{
    cout<<"我是一个进程，刚刚获取了一个信号,信号编号是: "<<signo << endl;
    exit(1);
}


static void Usage(const std::string &proc)
{
    cerr<<"Usage:\n\t" << proc << "signo pid"<<endl;
}

//我想写一个kill命令
// ./mykill 9 pid
int main(int argc,char* argv[])
{
//     for(int sig = 1;sig<=31;sig++) 
//         signal(sig,handler);


//     int a[100];
//     a[10000000] = 100;

    // signal(SIGALRM,handler);
    alarm(3);//3秒后alarm

    while(true)
    {
        //cnt++;
        cout<< "我是一个进程 cnt : "<<cnt++<<endl;
        sleep(1);
    }
    // signal(6,handler);//没有调用对应的handler方法,仅仅是注册


    // while(true)
    // {
    //     sleep(1);
    //     abort();
    //     //raise(2);//自己给自己发送2号信号
    // }
    // if(argc != 3) 
    // {
    //     Usage(argv[0]);
    //     exit(1);
    // }
 
    // if(kill(static_cast<pid_t>(atoi(argv[2])),atoi(argv[1])) == -1)
    // {
    //     cerr<<"kill :" <<strerror(errno) << endl;
    // }



    // for(int sig=1;sig<=31;sig++)
    // {
    //     signal(sig,handler);
    // }

    // //signal(SIGINT,handler);

    // sleep(3);
    // cout<<"进程已经设置完了"<<endl;
    // sleep(3);
    // while(true)
    // {
    //     cout<<"我是一个运行中的进程,我的pid: "<<getpid()<<endl;
    //     sleep(2);
    // }

    return 0;
}